import axios from 'axios'
import Vue from 'vue'
// 第一步：引入Vuex和store（Vuex是董事长，store是总经理）
import Vuex,{Store} from 'vuex'
// 第二步：使用插件（安装插件）
Vue.use(Vuex)

// 第三步：创建并暴露一个store实例对象（总经理）
export default new Store({
  // actions中的所有方法都是用于响应组件中的“动作”
  actions:{
    // 加 ======= >例子：服务员
    jijia({commit,state},value){
      console.log('jijia---服务员',value)
      if(state.sum % 2){
        commit('JIA',value)
      }
    },
    dengjia({commit},value){
      console.log('dengjia---服务员',value)
      setTimeout(() => {
        commit('JIA',value)
      }, 1000);
    },
    fuwuJia({commit}){
      axios.get('https://api.uomg.com/api/rand.qinghua?format=json').then(
        response => {
          console.log(response.data.content)
          commit('JIA',response.data.content.length)
        },
        error => {
          console.log(error.message)
        }
      )
    }
  },
  // mutations中的所有方法均具有修改state的能力，且mutations中方法（函数）必须为纯函数，不可以编写业务逻辑
  mutations:{
    // 加 ======= >例子：厨师
    /* 
      1.state就是数据
      2.value是组件传给服务员，服务员又传过来的
    */
    JIA(state,value){
      console.log('JIA---厨师',state,value)
      state.sum += value
    },
    JIAN(state,value){
      console.log('JIAN---厨师',state,value)
      state.sum -= value
    },
  },
  // 数据
  state:{
    sum:1,
    school:'atguigu',
    address:'宏福科技园'
  },
  // 加工后的数据
  getters:{
    bigSum(state){
      return state.sum * 10
    },
    bigSchool(state){
      return state.school.toUpperCase()
    },
  }
})
